require(["config"],function(){
	require(["jquery","ejs","header","bootstrap"],function($,ejs){
		function Position(){
			this.loadData(1);
			this.addListener();			
		};
		
		//ejs模板
		Position.PositionRowTemplate = `
			<tr>
 				<td class="id"><%= _id %></td>
 				<td style="text-align:center"><img style="width: 50px;" src="<%= logo %>" alt="" /></td>
 				<td><%= positionName %></td>
 				<td><%= company %></td>
 				<td><%= workExperience %></td>
 				<td><%= positionType %></td>
 				<td><%= place %></td>
 				<td><%= salary %></td>
 				<td><a href="#" class="update" data-toggle="modal" data-target="#addPosModal">修改</a><span>|</span><a href="#" class="del">删除</a></td>
 			</tr>
		`;
		
		$.extend(Position.prototype, {
			//注册事件监听
			addListener(){
				//添加职位
				$(".btn-add-pos").on("click",this.addPosHandler);
				//点击翻页
				$(".pagination").on("click","a",$.proxy(this.loadDataHandler,this));
				
			},
			//添加职位处理
			addPosHandler(){			
				$(".btn-add-pos").removeClass("hidden").siblings().addClass("hidden");
				//获取表单中的数据
				const url = "/api/positions/add";
				const data = new FormData($(".form-add-pos").get(0));
				//发送请求
				$.ajax({
					type: "post",
					url: url,
					data: data,
					dataType: "json",
					processData: false,// 不将 data 数据转换为查询字符串
					contentType: false,// 不使用默认的 "application/x-www-form-urlencoded"
					success: function(data){
						
						if(data.res_body.status === 1){
							const html = ejs.render(Position.PositionRowTemplate,data.res_body.data);
							//显示
							$(".table-position tbody").append(html);
							//关闭模态框
							$("#addPosModal").modal("hide");
							location.reload();
						}else{//添加失败
							$(".add-pos-error").removeClass("hidden");
						}
					}
				});
			},
			//翻页
			loadDataHandler(event){
				const $src = $(event.target);
				const page = Number($src.text());
				this.loadData(page);
				//标签使用类名处理
				$src.parent("li").addClass("active").siblings("li").removeClass("active");
			},
			//加载数据
			loadData(page){
				//默认查询第一页的数据
				page = page || 1;
				const url = "/api/positions/find_by_page?page="+page;
				//get请求
				$.getJSON(url,(data)=>{	
					if(data.res_code === 1){
						let html = "";
						data.res_body.list.forEach((curr)=>{
							html += ejs.render(Position.PositionRowTemplate,curr);
						});
						$(".table-position tbody").html(html);
					}
					//删除职位
					$(".del").on("click",$.proxy(this.delHandler,this));
					//修改职位信息
					$(".update").on("click",$.proxy(this.updateHandler,this));
				});			
			},
			//删除
			delHandler(event){
				const src = event.target;
				var _id = $(src).parent("td").siblings(".id").text();
				const url = "/api/positions/delete?_id="+_id;
				$.getJSON(url,(data)=>{
					if(data.res_code === 1){
						$(src).parent("td").parent("tr").remove();
					}
				});
			},
			//修改职位信息
			updateHandler(event){
				$(".btn-update-pos").removeClass("hidden").siblings().addClass("hidden");
				const src = event.target;
				var _id = $(src).parent("td").siblings(".id").text();
				$(".info_id").val(_id);
				//给模态框修改按钮绑定点击事件
				
				$(".btn-update-pos").on("click",$.proxy(this.update,this));		
			},
			//点击模态框确认修改
			update(){
				//获取表单中的数据
				const url = "/api/positions/update";
				const data = new FormData($(".form-add-pos").get(0));
				//发送请求
				$.ajax({
					type: "post",
					url: url,
					data: data,
					dataType: "json",
					processData: false,// 不将 data 数据转换为查询字符串
					contentType: false,// 不使用默认的 "application/x-www-form-urlencoded"
					success: function(data){
						console.log(data);
						if(data.res_body.status === 1){						
							//关闭模态框
							$("#addPosModal").modal("hide");						
						}else{//添加失败
							$(".add-pos-error").removeClass("hidden");
						}
					}
				});
				var _page = $("._page").find(".active").children("a").text();
				$.proxy(this.loadData(_page),this);
			}
		});
		new Position();
	});
});
